package com.adcc.loadsheet.billing.util;

import javax.print.*;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import java.io.File;
import java.io.FileInputStream;

/**
 * 打印
 * Created by zhaoml on 2020/5/12.
 */
public class PrintUtil {

    /**
     * 打印文件
     * @param getfile   文件路径
     * @param num   打印数量
     */
    public static void printFile(String getfile,Integer num){
        //构造一个文件选择器，默认为当前目录
        File file = new File(getfile);//获取选择的文件
        //构建打印请求属性集
        PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
        //设置打印格式，因为未确定文件类型，这里选择AUTOSENSE
        DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;
        //查找所有的可用打印服务
        //PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
        //定位默认的打印服务
        PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
        //显示打印对话框
        for(int i = 0;i < num;i ++){
            try {
                DocPrintJob job = defaultService.createPrintJob(); //创建打印作业
                FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
                DocAttributeSet das = new HashDocAttributeSet();
                Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式
                job.print(doc, pras); //进行文件的打印
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
}